package other;

import java.io.File;
import java.io.IOException;

/**
 * @Auther: Code
 * @Date: 2018/9/9 18:02  C:\Users\chenyb\Desktop
 * @Description: 批量重命名文件
 */
public class test {
    //    static String newString = "";//新字符串,如果是去掉前缀后缀就留空，否则写上需要替换的字符串
//    static String oldString = "home.cnblogs.comu";//要被替换的字符串
//    static String dir = "C:\\Users\\chenyb\\Desktop\\异常行为识别任务\\fenzhen3";//文件所在路径，所有文件的根目录，记得修改为你电脑上的文件所在路径
    static String dir = "C:\\Users\\chenyb\\Desktop\\89-img";
    static String txtDir = "C:\\Users\\chenyb\\Desktop\\89-txt";

    public static void main(String[] args) throws IOException {
        testTxtHasImg();
        testTxtHasImg();
    }

    /**
     * 检测 img 有没有对应的 txt
     */
    public static void testImgHasTxt(){
        int count = 0;
//        recursiveTraversalFolder(dir);//递归遍历此路径下所有文件夹
        File[] imgArr = new File(dir).listFiles();
        File[] txtArr = new File(txtDir).listFiles();
        for (File img : imgArr) {
            boolean exist = false;
            String imgName = img.getName().split("\\.")[0];

            for (File txt : txtArr) {
                String txtName = txt.getName().split("\\.")[0];
                if (txtName.equals(imgName)) {
                    exist = true;
                }
            }

            if (!exist) {
//                img.delete();
                System.out.println(img.getName() + " 没有对应txt！");
            }
        }
        System.out.println(count);
    }

    /**
     * 检测 txt 有没有对应的 img
     */
    public static void testTxtHasImg() {
        File[] imgArr = new File(dir).listFiles();
        File[] txtArr = new File(txtDir).listFiles();
        for (File txt : txtArr) {
            boolean exist = false;
            String txtName = txt.getName().split("\\.")[0];
            for (File img : imgArr) {
                String imgName = img.getName().split("\\.")[0];
                if (txtName.equals(imgName)) {
                    exist = true;
                }
            }
            if (!exist) {
                System.out.println(txt.getName() + " 没有对应img！");
            }
        }
    }

    /**
     * 递归遍历文件夹获取文件
     */
    public static void recursiveTraversalFolder(String path) {
        File folder = new File(path);
        if (folder.exists()) {
            File[] fileArr = folder.listFiles();
            if (null == fileArr || fileArr.length == 0) {
                System.out.println("文件夹是空的!");
                return;
            } else {
                File newDir = null;//文件所在文件夹路径+新文件名
                String newName = "";//新文件名
                String fileName = null;//旧文件名
                File parentPath = new File("");//文件所在父级路径
                for (File file : fileArr) {
                    if (file.isDirectory()) {//是文件夹，继续递归，如果需要重命名文件夹，这里可以做处理
                        System.out.println("文件夹:" + file.getAbsolutePath() + "，继续递归！");
                        recursiveTraversalFolder(file.getAbsolutePath());
                    } else {//是文件，判断是否需要重命名
                        fileName = file.getName();
                        parentPath = file.getParentFile();
                        System.out.println(fileName);

//                        int fileN = Integer.parseInt(fileName.split("\\.")[0]);
//                        newName = fileN / 300 + "-" + (((fileN - 1) / 5) % 60) + "-" + (((fileN - 1) % 5) + 1);
//                        newDir = new File(parentPath + "/" + newName + ".jpeg");//文件所在文件夹路径+新文件名
//                        newDir = new File(parentPath + "/89-" + fileName);
//                        newDir = new File(parentPath + "/91-" + fileName.substring(fileName.length()-10,fileName.length()));
                        newDir = new File(parentPath + "/" + fileName.replace("jpeg", "jpg"));
                        file.renameTo(newDir);//重命名
                        System.out.println("修改后：" + newDir);
                    }
                }
            }
        } else {
            System.out.println("文件不存在!");
        }
    }
}